package com.leyou.trade.config;

import com.auth.dto.UserDetails;
import com.leyou.auth.utils.UserContext;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//动态计算集合名的方法
@Component
public class CollectionNameBuilder {
    /**
     * 集合名称的前缀
     */
    @Value("${ly.mongo.collectionNamePrefix}")
    private String namePrefix;

    public String build(){
        // 获取当前用户
        UserDetails user = UserContext.getUser();
        if (user == null) {
            return "";
        }
        // 用一个固定collection名前缀，拼接上用户id计算出的数字，作为collection名
        // 假设有100个数据库，我们分开存
        // 利用用户id的hash值存储是因为到时候一个用户的信息都可以保存在同一个数据库中来
        return namePrefix + user.getId().hashCode() % 100;
    }
}